AtCoder Beginner Contest 191 A~D题解 |
您所在的位置:网站首页 › digital graffiti游戏 › AtCoder Beginner Contest 191 A~D题解 |
ABC191 A~D
[A - Vanishing Pitch](https://atcoder.jp/contests/abc191/tasks/abc191_a)题目大意输入格式输出格式样例分析代码
[B - Remove It](https://atcoder.jp/contests/abc191/tasks/abc191_b)题目大意输入格式输出格式样例样例输入1样例输出1样例输入2样例输出2
分析代码
[C - Digital Graffiti](https://atcoder.jp/contests/abc191/tasks/abc191_c)题目大意输入格式输出格式样例样例输入样例输出
自制数据输入输出
分析代码
[D - Circle Lattice Points](https://atcoder.jp/contests/abc191/tasks/abc191_d)题目大意输入格式输出格式样例样例输入1样例输出1样例输入2样例输出2样例输入3样例输出3
分析代码
A - Vanishing Pitch
题目大意
一个球的速度是 V m/s V~\text{m/s} V m/s,它飞了 T T T秒后会隐形,飞了 S S S秒时会接触隐形。 球在飞了 D D D米后,人能看见它吗?输出Yes或者No。 1 ≤ V ≤ 1000 1\le V\le 1000 1≤V≤1000 1 ≤ T < S ≤ 1000 1\le T int n, x; scanf("%d%d", &n, &x); while(n--) { int a; scanf("%d", &a); if(a != x) printf("%d ", a); } putchar('\n'); return 0; } C - Digital Graffiti 题目大意 我们有一张 H × W H\times W H×W的方格纸,在 ( i , j ) (i,j) (i,j)位置上的点是 S i , j S_{i,j} Si,j。 每一个方格都是黑色(#)或白色(.),题目保证最外圈的点都是白色的。 黑色方格放在一起是一个多边形。求这个多边形的边数。 3 ≤ H , W ≤ 10 3\le H,W\le 10 3≤H,W≤10 输入格式H W H~W H W S 1 , 1 S 1 , 2 … S 1 , W S_{1,1}S_{1,2}\dots S_{1,W} S1,1S1,2…S1,W S 2 , 1 S 2 , 2 … S 2 , W S_{2,1}S_{2,2}\dots S_{2,W} S2,1S2,2…S2,W ⋮ \vdots ⋮ S H , 1 S H , 2 … S H , W S_{H,1}S_{H,2}\dots S_{H,W} SH,1SH,2…SH,W 输出格式输出答案。 样例 样例输入 5 5 ..... .###. .###. .###. ..... 样例输出 4这是一个四边形。 自制数据由于样例太简单,无法全面测试我们的程序。因此,博主再提供一组数据: 输入 5 5 ..... ..#.. .###. .#.#. ..... 输出 12 分析很多人看到这种图就会想到 DFS \text{DFS} DFS、 BFS \text{BFS} BFS……其实这道题根本不需要。 这道题的做法来源于一个很简单的定理:多边形的顶点数=边数。 再进一步分析,一个点,在这个图上,怎样判断其是否为顶点? 其实,只要一个点周围四个方格中有一个或三个白方格,那么它就是一个顶点。 我们只要用一个 2 × 2 2\times 2 2×2的正方形搜索即可。 代码 #include #define maxn 15 using namespace std; char c[maxn][maxn]; int main() { int h, w, ans = 0; scanf("%d%d", &h, &w); for(int i=0; i // Returns: input * 10000. LL res = 0LL; int num = 0; bool flag = false, negative = false; for(char c=getchar(); c != ' ' && c != '\n'; c=getchar()) { if(c == '-') negative = true; else if(c == '.') flag = true; else { res *= 10LL; res += c - '0'; if(flag) num ++; } } for(int i=num; i i *= DIV; LL l = y, r = y + R; while(l // Returns: ceil(a / DIV). if(a x = read(), y = read(), R = read(); LL ans = 0LL, left = ceildiv(x - R), right = floordiv(x + R); for(LL i=left; i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |